package com.sdry.basic.controller;

import com.sdry.basic.entity.Container;
import com.sdry.basic.service.ContainerService;
import com.sdry.system.entity.SysUser;
import com.sdry.untils.DateUtil;
import com.sdry.untils.ResponseUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 *
 *@ClassName: ContainerController
 *@Description: 容器
 *@Author tdd
 *@Date 2020-2-19 15:38:44
 *@version 1.0
*/
@Controller
@RequestMapping("/container")
public class ContainerController {
	@Resource
	ContainerService containerService;
	//声明一个Logger
	private final static Logger logger = LoggerFactory.getLogger(ContainerController.class);
	/** 
	 * 进入页面
	 * @param model
	 * @return 页面路径
	*/
	@RequestMapping("/page")
	public String pageContainer (Model model) {
		return "/td/basis/container";
	}
	/** 
	 * 根据主键id查询实体
	 * @param id 主键id
	 * @return 实体
	*/
	@RequestMapping("/queryById")
	@ResponseBody
	public Container queryById(Long id) {
		logger.info("id"+id);
		Container param = containerService.queryById(id);
		logger.info("根据主键id查询实体返回内容"+JSONArray.fromObject(param));
		return param;
	}
	/** 
	 * 根据条件查询所有
	 * @param param 实体条件
	 * @return 实体集合
	*/
	@RequestMapping("/queryAllByMution")
	@ResponseBody
	public List<Container> queryAllByMution(Container param) {
		logger.info("根据条件查询所有条件"+JSONArray.fromObject(param));
		List<Container> list = containerService.queryAllByMution(param);
		logger.info("根据条件查询所有返回内容"+JSONArray.fromObject(list));
		return list;
	}
	/** 
	 * 根据条件分页查询
	 * @param param 实体条件
	 * @param response
	*/
	@RequestMapping("/list")
	public void list(Container param,HttpServletResponse response){
		logger.info("根据条件分页查询条件"+JSONArray.fromObject(param));
		/*
		 * 条件分页查询内容
		 */
		List<Container> list = containerService.findPageByMution(param);
		logger.info("根据条件分页查询条件返回内容"+JSONArray.fromObject(list));
		/*
		 * 条件查询总条数
		 */
		Integer total = containerService.selectCountByMution(param);
		logger.info("条件查询总条数返回条数"+total);
		/*
		 * 转为json数据传至页面
		 */
		//创建result
		JSONObject jsonObject = new JSONObject();
		//添加入jsonObject
		jsonObject.put("code", 0);
		jsonObject.put("rows", list);
		jsonObject.put("total", total);
		try {
			ResponseUtil.write(response, jsonObject);
		} catch (Exception e) {
			logger.info("根据条件分页查询返回数据失败");
			e.printStackTrace();
		}
	}
	/** 
	 * 插入返回id
	 * @param param 实体条件
	 * @param response
	*/
	@RequestMapping("/insert")
	public void insert(Container param, HttpServletResponse response, HttpServletRequest request){
		logger.info("插入返回id插入内容"+JSONArray.fromObject(param));
		param.setCcreateTime(DateUtil.dateFormat3());
		SysUser user = (SysUser) request.getSession().getAttribute("user");
		param.setCcreateMan(user.getUsername());

		Long id = containerService.insert(param);
		logger.info("插入返回id"+id);
		try {
			ResponseUtil.write(response,id);
		} catch (Exception e) {
			logger.info("插入返回id返回数据失败");
			e.printStackTrace();
		}
	}
	/** 
	 * 根据主键更新 返回影响行数
	 * @param param 实体条件
	 * @param response
	*/
	@RequestMapping("/update")
	public void update(Container param,HttpServletResponse response){
		logger.info("根据主键更新 返回影响行数更新内容"+JSONArray.fromObject(param));
		Integer count = containerService.update(param);
		logger.info("根据主键更新 返回影响行数"+count);
		try {
			ResponseUtil.write(response,count);
		} catch (Exception e) {
			logger.info("根据主键更新 返回影响行数返回数据失败");
			e.printStackTrace();
		}
	}
	/** 
	 * 根据主键拼接的字符串删除返回影响行数
	 * @param ids 主键拼接的字符串
	 * @return 影响行数
	*/
	@RequestMapping("/delete")
	public void delete(String ids,HttpServletResponse response){
		logger.info("根据主键拼接的字符串删除返回影响行数：主键拼接"+ids);
		ids=ids.replace("'",""); 
		Integer count = containerService.delete(ids);
		logger.info("根据主键拼接的字符串删除返回影响行数"+count);
		try {
			ResponseUtil.write(response,count);
		} catch (Exception e) {
			logger.info("根据主键拼接的字符串删除返回影响行数返回数据失败");
			e.printStackTrace();
		}
	}
}
